1. Field of the Invention
This invention relates in general to storage systems, and more particularly to a method, apparatus and program storage device for determining sector block sizes using existing controller signals.
2. Description of Related Art
Magnetic recording is a key and invaluable segment of the information-processing industry. While the basic principles are one hundred years old for early tape devices, and over forty years old for magnetic hard disk drives, an influx of technical innovations continues to extend the storage capacity and performance of magnetic recording products. For hard disk drives, the areal density of written data bits on the magnetic medium has increased by a factor of more than two million since the first disk drive was applied to data storage. Areal density continues to grow due to improvements in magnet recording heads, media, drive electronics, and mechanics.
Data bits may be read from and written to data sectors on the magnetic medium by read/write heads. In turn, read and write signals are communicated to and from the read/write heads through a read/write recording channel. Storage controllers provide support for several different sizes of these data sectors. However, the actual sector sizes that a read/write channel supports are typically not multiples of codeword sizes (including cyclic redundancy code (CRC) bytes and error correction code (ECC) bytes), e.g., channel run-length-limited (RLL) codes. The “byte” here is a generic term for referring a group of bits. It may be, but is not limited to, a group of 8-bits. It could be a group of any number of bits such as 10-bits or 12-bits. The examples described herein may be applied to different sizes of the “byte”. A codeword size is the number of user bits transferred (as opposed to channel bits which are encoded user bits) and the code rate (=m/n) of, for example an RLL code, describes the ratio of the user bits (m) to the encoded channel bits (n).
More specifically, a channel code rate of ½ means that twice as much information as the user data is written on a magnetic medium. For example, if a storage controller, such as a hard disk controller (HDC), provides a 612-byte data sector and 8 CRC bytes and 36 ECC bytes, the actual size of the sector is 656 bytes. If a 96/104 channel code rate is used (i.e., 96 user bits to 104 encoded channel bits), then the codeword size is 12 bytes (i.e., 96 user bits divided by 8 bits, assuming there are 8-bits in a byte in this case).
When the size of a last block of data does not equal the size of the codeword, a read/write channel may process the last data block in two ways. The first way is to pad additional bytes to the last data block to extend its length to match the codeword size. For example, the block size of the last block of data (R) may be calculated as a modulo of the sector size N and the codeword size L, denoted as MOD (N, L). If the sector size N is 556 bytes and a 96/104-channel code rate is used, then the size of the last data block is 4 bytes (i.e., R=MOD (556, 12)=4 bytes). Then, the number of pad bytes required to make the size of the last data block equal to the codeword size is eight (i.e., 12 bytes−4 bytes=8 bytes). The approach of padding bytes extends parity protection on the last data block, but reduces overall code rate efficiency thereby resulting in losses in storage track format efficiency.
The second approach to deal with a smaller last data block is not to pad bytes to the last data block, but to leave the last data block parity unprotected. This technique does not suffer from a loss of code rate efficiency. However, this technique does increase the error rate thereby reducing error rate performance (e.g., the order of magnitude of losses depends on raw soft error rates).
A better way of dealing with the last data block is to employ a scheme that allows parity protection on a variable block size instead of a fixed block size. For example, in the case of a 96/104-channel code rate, parity protection on the last data block may be accomplished on block sizes starting with, for example, the 4 bytes as calculated above and proceed in 2-byte increment. This approach requires no pad bytes and retains parity protection on the last data block, thus, gaining overall system performance. However, in order to implement this approach, a read/write channel needs to know the size of the last data block, a parameter not provided by the current read/write channel hardware.
Nevertheless, there are techniques for a read/write channel to determine the size of the last data block. One way is for the recording channel to provide an electrical contact point (pin) for the storage controller, using a signal on the pin to determine the size of the last data block. Another technique is for the recording channel to provide registers to store the information of the size of last data block. However, these techniques require modifications to the interface between the controller and the read/write channel.
It can be seen then that there is a need for a method, apparatus and program storage device for determining sector block sizes using existing controller signals.